<#import "commons.ftl" as m/>

package <@m.getBasePackage param=context flag=true/><@m.getDalPackage param=context flag=false/>;

import <@m.getBasePackage param=context flag=true/><@m.getModelPackage param=context flag=true/>${table.upperName}<@m.getModelSuffix param=context/>;
import <@m.getBasePackage param=context flag=true/><@m.getQueryPackage param=context flag=true/>${table.upperName}<@m.getQuerySuffix param=context/>;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * <pre>
 *   <b>表名</b>：${table.origName}
 *   ${(table.comment)!''}数据操作对象
 * </pre>
 *
 * @author ${context.conf.author!'系统生成'}
 * @email ${context.conf.email!'系统生成'}
 * @version ${context.conf.version!'1.0.0'}
 * @date ${.now?string('yyyy-MM-dd')}
 * @copyright ${context.conf.copyright!'系统生成'}
 */
@Mapper
public interface ${table.upperName}<@m.getDaoSuffix param=context/> {
    /**
     * <pre>
     *  分页查询 ${(table.comment)!''}数据
     * </pre>
     *
     * @param query 查询条件
     * @return ${(table.comment)!''}数据集合
     */
    List<${table.upperName}<@m.getModelSuffix param=context/>> queryPage(${table.upperName}<@m.getQuerySuffix param=context/> query);

    /**
     * <pre>
     * 根据查询条件统计${(table.comment)!''}数量
     * </pre>
     *
     * @param query 查询条件
     * @return ${(table.comment)!''}数量
     */
     Integer countPage(${table.upperName}<@m.getQuerySuffix param=context/> query);

    /**
     * <pre>
     *  根据ID查询${(table.comment)!''}数据
     * </pre>
     *
     * @param ${table.lowerName}Id ${(table.comment)!''}Id
     * @return 单条记录数据
     */
    ${table.upperName}<@m.getModelSuffix param=context/> queryById(${table.pkType!'Long'} ${table.lowerName}Id);

    /**
     * <pre>
     *  保存信息
     * </pre>
     *
     * @param ${table.lowerName} 数据信息
     */
    void insert${table.upperName}(${table.upperName}<@m.getModelSuffix param=context/> ${table.lowerName});

    /**
     * <pre>
     * 根据ID更新信息
     * </pre>
     *
     * @param ${table.lowerName} 数据信息
     * @return 修改数量
     */
    Integer update${table.upperName}(${table.upperName}<@m.getModelSuffix param=context/> ${table.lowerName});

    /**
     * <pre>
     *  根据ID删除信息
     * </pre>
     *
     * @param ${table.lowerName}Id ${(table.comment)!''}Id
     * @return 删除数量
     */
    Integer deleteById(${table.pkType!'Long'} ${table.lowerName}Id);

 }
